package com.shxy.service;

import com.shxy.pojo.Node;
import com.shxy.pojo.MaterialCategory;

import javax.transaction.Transactional;
import java.util.List;

/**
 * 目录管理接口
 */
public interface ICategoryService {

    /**
     * 根据编号查询
     * @param id
     * @return
     */
    Node getNodeById(int id);

    /**
     * 判断节点编号是否存在
     * @param nodeId
     * @return
     */
    boolean existNodeId(int nodeId);

    /**
     * 判断该目录节点是否存在
     * @param node
     * @return
     */
    boolean existNode(Node node);

    /**
     * 添加目录
     * @param node
     * @return
     */
    @Transactional
    Node addNode(Node node);

    /**
     * 删除目录
     * @param id
     * @return
     */
    boolean deleteNode(int id);

    /**
     * 修改目录
     * @param node
     * @return
     */
    Node updateNode(Node node);

    /**
     * 添加资源到指定目录
     * @param materialCategory
     * @return
     */
    MaterialCategory addMaterialCategory(MaterialCategory materialCategory);

    /**
     *
     * 将资源添加到指定目录
     * @param materialId
     * @param nodeId
     * @param title
     * @param idx
     * @return
     */
    MaterialCategory addMaterialCategory(String materialId, int nodeId, String title, int idx);

    /**
     * 删除分类信息
     * @param materialCategoryId
     * @return
     */
    boolean deleteMaterialCategory(String materialCategoryId);

    /**
     * 修改分类信息
     * @param materialCategory
     * @return
     */
    MaterialCategory updateMaterialCategory(MaterialCategory materialCategory);

    /**
     * 获取所有的子节点
     * @param nodeId
     * @param children
     * @return
     */
    List<Node> getChildrenList(int nodeId, boolean children);

    /**
     * 清空指定节点下所有的资源
     * @param nodeId
     * @param children
     * @return
     */
    int clearMaterialsOfCatalog(int nodeId, boolean children);

    /**
     * 设置资源序号
     * @param materialCategoryId
     * @param index
     * @return
     */
    boolean setMaterialCategoryIndex(String materialCategoryId, int index);
}
